#region head comment
/*
Code generate by YhdSdkTool.
email:starpeng@vip.qq.com
2013-01-21 23:00:56:940 +08:00
*/
#endregion

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using YhdSdk.Domain;
using YhdSdk.Domain.Product;
using YhdSdk.Response.Product;

namespace YhdSdk.Request.Product
{
    /// <summary>
    /// 更新一个产品
    ///<para></para>
    ///<para>根据输入产品(单品+系列产品虚品)的基本信息对产品进行更新操作，成功则返回成功记录数，失败则返回失败记录数和相应的错误描述信息。注意:产品名称前面必须</para>
    ///<para>有品牌名称加一个空格</para>
    /// </summary>
    public class YhdProductUpdateRequest : IYhdRequest<YhdProductUpdateResponse>
    {
        /// <summary>
        /// 1号商城产品ID,与outerId二选一(productId优先)
        /// </summary>
        /// <example>1707612</example>
        [XmlElement("productId")]
        public Nullable<Int64> ProductId
        {
            get;
            set;
        }

        /// <summary>
        /// 外部产品ID,与productId二选一
        /// </summary>
        [XmlElement("outerId")]
        public String OuterId
        {
            get;
            set;
        }

        /// <summary>
        /// 商家产品类别ID列表(从获取商家产品类别接口中获取叶子ID)
        /// </summary>
        /// <example>12931,12933</example>
        [XmlArray("merchantCategoryId")]
        [XmlArrayItem("int64")]
        public List<Int64> MerchantCategoryId
        {
            get;
            set;
        }

        /// <summary>
        /// 产品名称(需要在产品名称前面添加品牌名称加空格,不超过100个字符)
        /// </summary>
        /// <example>1号商城 我是产品名称</example>
        [XmlElement("productCname")]
        public String ProductCname
        {
            get;
            set;
        }

        /// <summary>
        /// 产品名称副标题(不超过100个字符)
        /// </summary>
        [XmlElement("productSubTitle")]
        public String ProductSubTitle
        {
            get;
            set;
        }

        /// <summary>
        /// 产品名称前缀(不超过10个字符)
        /// </summary>
        [XmlElement("productNamePrefix")]
        public String ProductNamePrefix
        {
            get;
            set;
        }

        /// <summary>
        /// 产品描述(文描)(不超过300kb)
        /// </summary>
        /// <example>&lt;img src=&quot;y.jpg&quot;  alt=&quot;y&quot;/&gt;</example>
        [XmlElement("productDescription")]
        public String ProductDescription
        {
            get;
            set;
        }

        /// <summary>
        /// 产品属性列表(每个属性之间用逗号分隔,属性ID和属性值之间用冒号分隔,其中属性值可以不输入。如属性ID:属性值),属性id不能重复
        /// </summary>
        /// <example>3281:电费1,3282:</example>
        [XmlArray("prodAttributeInfoList")]
        [XmlArrayItem("prodAttributeInfo")]
        public List<ProdAttributeInfo> ProdAttributeInfoList
        {
            get;
            set;
        }

        /// <summary>
        /// 属性项列表(每个属性之间用逗号分隔,属性ID和选项ID之间用冒号分隔,选项ID之间用竖线分隔,其中选项ID可以不输入。如属性ID:选项ID1|选项ID2),属性id不能重复,也不能同上面的属性ID相同,同一个属性ID不能有相同的选项ID
        /// </summary>
        /// <example>2882:,3280:11497|11499</example>
        [XmlArray("prodAttributeItemInfoList")]
        [XmlArrayItem("prodAttributeItemInfo")]
        public List<ProdAttributeItemInfo> ProdAttributeItemInfoList
        {
            get;
            set;
        }

        /// <summary>
        /// Api接口名称
        /// </summary>
        public String ApiName
        {
            get{ return "yhd.product.update"; }
        }

        /// <summary>
        /// 获取参数列表
        /// </summary>
        public IDictionary<string, string> GetParameters()
        {
            YhdDictionary parameters = new YhdDictionary();
            parameters.Add("productId" ,this.ProductId);
            parameters.Add("outerId" ,this.OuterId);
            parameters.Add("merchantCategoryId" ,this.MerchantCategoryId);
            parameters.Add("productCname" ,this.ProductCname);
            parameters.Add("productSubTitle" ,this.ProductSubTitle);
            parameters.Add("productNamePrefix" ,this.ProductNamePrefix);
            parameters.Add("productDescription" ,this.ProductDescription);
            parameters.Add("prodAttributeInfoList" ,this.ProdAttributeInfoList);
            parameters.Add("prodAttributeItemInfoList" ,this.ProdAttributeItemInfoList);
            return parameters;
        }

        /// <summary>
        /// 验证参数
        /// </summary>
        public void Validate()
        {
        }

    }
}
